Due to the wide spread use of computers in today's society, networked computers are beginning to be equipped with devices and applications that are replacing many of the traditional devices people use every day. For example, computers equipped with Digital Versatile Disks (DVD) may be used in place of a television set, CD ROMs may also double as CD players thus replacing the traditional radio or stereo and, recently, computer networks have been used in place of the modem telephone network. These new applications have put a larger burden on the information technology (IT) organizations that work to provide reliable application performance on a 24-hour, 7-day-a-week basis. This is due to the fact that user perception of the performance of these applications is not based on prior computer applications but instead on their experiences with the traditional devices, i.e. television, radio or telephone.
Many of these new applications require real-time performance which was not required for previous computer applications. For example, a user making a telephone call over a computer network expects the call to sound like a typical call over a telephone network and does not expect the call to be interrupted by periodic delays due to computer network traffic. In reality, a telephone call made over a computer network, for example, the Internet, is not implemented like a telephone call over a traditional telephone line. Internet calls typically rely on codec hardware and/or software for voice digitization so as to provide packetized voice communication. In other words, the conversation is digitized using the codec, the digitized conversation is placed into packets, the packets are transmitted over the network and then converted back to a voice signal for receipt by the receiving device (or person). Ideally, all of this digitizing and conversion should be transparent to a user.
Many of these new applications, especially distributed Internet applications, require accurate endpoint clock synchronization. Network clocks may vary significantly from one endpoint of a network to another endpoint. One protocol currently being used to synchronize endpoint clocks in a network is the Network Time Protocol (NTP). NTP is an Internet standard protocol and may be used to organize and maintain a set of timeservers and transmission paths as a synchronization subnet. An NTP network usually gets its time from an authoritative time source. This authoritative time source may be an external time source, such as a Global Positioning System (GPS), a designated machine or group of machines within the network, a radio clock, an atomic clock attached to a timeserver, or the like. An NTP host, which may be a server and/or a client, may distribute this authoritative time, i e. a Universal Coordinated Time (UTC), across the network. The UTC is accepted as the actual time and each additional timeserver is assigned a stratum level that corresponds with the individual timeserver's distance from an accurate time source. For example, a stratum-1 server usually has direct access to a UTC time source, a stratum-2 server receives its synchronization information from a stratum 1 server and so on.
Synchronizing a client to a network server using NTP generally consists of several packet exchanges where each exchange comprises a request from the client to a server and a corresponding reply from the server to the client. The client and the sever may both be NTP hosts as discussed above. Each NTP host estimates UTC from samples received from a plurality of other NTP hosts. In other words, the UTC time is not believed by a server/client until several packet exchanges have taken place. For example, the client stores its local time into the packet being sent. When a server receives such a packet with the client's local time, the server will store its own estimate of the current time into the packet and return the packet to the client. Upon receipt, the client once again stores its own time. This timing information may be used to estimate the travel time of the packet, i.e. round trip time of the packet. The round trip time may then be used to estimate current time. If the server is sending clock values that are statistically incompatible with clock values sent by other servers, this server/client may be considered an invalid NTP host. Although NTP is a very accurate method of synchronizing endpoint clocks, it may require special equipment, such as a stratum 1 clock directly attached to each endpoint, which may not be desirable for certain types of applications.